import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
/*
  1、vuex就是在vue中创建全局变量的一个东西
  2、并且我们可以通过一些方法，来改变这些全局变量的值
  Store: 就是new Vuex.Store({})的实例对象,里面的state，mutation，actions，modules这些对象都是在Store里面
  State: vuex的数据源，所有通过vuex声明的全局变量都会在state里面
  getter： 相当于vue中的计算属性，可以用来监听计算state里面数据的变化
  mutations： 就是vuex操作数据的方法，在vuex中不推荐直接去为state赋值，而是推荐使用mutations去修改state的值
  actions: 帮助mutations去执行异步操作
  modules： 将Store分为多个模块，每一个模块都是一个modules
*/
export default new Vuex.Store({
  state: {
    shoppCarDatas:[]
  },
  mutations: {
    addShoppingDatas({shoppCarDatas},goods) {
      // 为商品新增属性
      // 可以通过Vue.set方法把新添加的数据变为响应式的数据
      // 在push 之前首先在shoppingCarDatas里面有没有该商品
      let isExist =  shoppCarDatas.some(item => {
        if(item.id === goods.id){
          return item.number += 1
        }
      })
      if(!isExist){
        Vue.set(goods,'isCheck',false)
        Vue.set(goods,'number',1)
        shoppCarDatas.push(goods)
      }
    },
    // 更该指定商品数量
    changeShoppingDataNumber(state,data) {
      state.shoppCarDatas[data.index].number = data.number
    }
  },
  actions: {
  },
  modules: {
  }
})
